package com.ruoyi.system.domain;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.TableName;
import com.ruoyi.system.entity.AbdulBaseEntity;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 门店商品管理对象 store_product
 *
 * @author ruoyi
 * @date 2025-05-26
 */
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("store_product")
public class StoreProduct extends AbdulBaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 商品唯一标识符(主键) */
    private Long id;

    /** 商品ID(如SKU编码，需唯一) */
    @Excel(name = "商品ID(如SKU编码，需唯一)")
    private String productCode;

    /** 商品排序序号(用于前端展示) */
    @Excel(name = "商品排序序号(用于前端展示)")
    private Long sortOrder;

    /** 商品名称 */
    @Excel(name = "商品名称")
    private String productName;

    /** 商品条码(支持EAN-13/UPC等) */
    @Excel(name = "商品条码(支持EAN-13/UPC等)")
    private String barcode;

    /** 商品规格(如"500g/袋") */
    @Excel(name = "商品规格")
    private String specification;

    /** 商品售价(单位:元) */
    @Excel(name = "商品售价(单位:元)")
    private BigDecimal sellingPrice;

    /** 商品成本价(单位:元) */
    @Excel(name = "商品成本价(单位:元)")
    private BigDecimal costPrice;

    /** 商品简写(用于POS快速录入) */
    @Excel(name = "商品简写(用于POS快速录入)")
    private String shortName;

    /** 商品分类ID(关联分类表) */
    @Excel(name = "商品分类ID(关联分类表)")
    private Long categoryId;

    /** 分类路径(如"1,5,8"表示完整路径) */
    @Excel(name = "分类路径")
    private String categoryPath;

    /** 商品品牌ID(关联品牌表) */
    @Excel(name = "商品品牌ID(关联品牌表)")
    private Long brandId;

    /** 商品单位(如"个"、"箱") */
    @Excel(name = "商品单位")
    private String unit;

    /** 保质期(单位:天) */
    @Excel(name = "保质期(单位:天)")
    private Long shelfLife;

    /** 商品状态 */
    @Excel(name = "商品状态")
    private String status;

    /** 是否参与库存计算 */
    @Excel(name = "是否参与库存计算")
    private String participateInventory;

    /** 商品主图URL */
    @Excel(name = "商品主图URL")
    private String productImage;

    /** 库存预警值(低于此值触发预警) */
    @Excel(name = "库存预警值(低于此值触发预警)")
    private Long inventoryWarning;

    /** 库存上限(0表示无限制) */
    @Excel(name = "库存上限(0表示无限制)")
    private Long maxInventory;

    /** 原材料冲占比(如50.00表示50%) */
    @Excel(name = "原材料冲占比(如50.00表示50%)")
    private BigDecimal rawMaterialRatio;

    /** 原材料分类ID(关联分类表) */
    @Excel(name = "原材料分类ID(关联分类表)")
    private Long rawMaterialCategoryId;

    /** 关联原材料名称 */
    @Excel(name = "关联原材料名称")
    private String rawMaterialName;

    /** 单个商品所需原材料数量 */
    @Excel(name = "单个商品所需原材料数量")
    private BigDecimal rawMaterialQuantity;

    /** 配品分类ID(关联分类表) */
    @Excel(name = "配品分类ID(关联分类表)")
    private Long accessoryCategoryId;

    /** 关联配品名称 */
    @Excel(name = "关联配品名称")
    private String accessoryName;

    /** 配品单价 */
    @Excel(name = "配品单价")
    private BigDecimal accessoryPrice;

    /** 配品单位 */
    @Excel(name = "配品单位")
    private String accessoryUnit;

    /** 做法分类ID(关联分类表) */
    @Excel(name = "做法分类ID(关联分类表)")
    private Long cookingMethodCategoryId;

    /** 关联做法名称 */
    @Excel(name = "关联做法名称")
    private String cookingMethodName;

    /** 做法加价金额 */
    @Excel(name = "做法加价金额")
    private BigDecimal cookingMethodPrice;

    /** 做法加价方式 */
    @Excel(name = "做法加价方式")
    private String cookingMethodPriceType;

    /** 商品角标(如"新品"、"热销") */
    @Excel(name = "商品角标")
    private String productBadge;

    /** 点餐标签(如"早餐特供") */
    @Excel(name = "点餐标签")
    private String orderTag;

    /** 描述标签(如"无糖"、"低脂") */
    @Excel(name = "描述标签")
    private String descriptionTag;

    /** 商品详细描述(支持HTML) */
    @Excel(name = "商品详细描述(支持HTML)")
    private String productDescription;

    /** 点单时是否允许改价 */
    @Excel(name = "点单时是否允许改价")
    private String allowPriceChange;

    /** 整单是否允许手动打折 */
    @Excel(name = "整单是否允许手动打折")
    private String allowWholeOrderDiscount;

    /** 折扣方式 */
    @Excel(name = "折扣方式")
    private String discountRule;

    /** 打印设置(JSON格式，如{"kitchen_printer":"1","bar_printer":"2"}，需MySQL 5.7+) */
    @Excel(name = "打印设置")
    private String printSetting;

    /** 是否属于配赠商品 */
    @Excel(name = "是否属于配赠商品")
    private String isGiftProduct;

    /** 是否支持自助点单 */
    @Excel(name = "是否支持自助点单")
    private String supportSelfOrder;

    /** 是否参与最低消费 */
    @Excel(name = "是否参与最低消费")
    private String participateMinConsumption;

    /** 是否参与会员积分 */
    @Excel(name = "是否参与会员积分")
    private String participateMemberPoints;

    /** 是否参与会员积分兑换 */
    @Excel(name = "是否参与会员积分兑换")
    private String participatePointsExchange;

    /** 是否参与会员积分抵现 */
    @Excel(name = "是否参与会员积分抵现")
    private String participatePointsDeduction;

    /** 是否参与手动优惠 */
    @Excel(name = "是否参与手动优惠")
    private String participateManualPromotion;

    /** 最后操作人ID(关联员工表) */
    @Excel(name = "最后操作人ID(关联员工表)")
    private Long operatorId;

    /** 逻辑删除标记(0=未删除,1=已删除) */
    @Excel(name = "逻辑删除标记(0=未删除,1=已删除)")
    private Integer isDeleted;

    /** 手机号 */
    @Excel(name = "手机号")
    private String phone;

    /**
     * 商品库中商品id
     */
    @ApiModelProperty(value = "商品库中商品id")
    private Long productManagementId ;


}
